A virtual machine is an executable object that is capable of emulating an entire computing system, including the operating system, potentially also applications, and corresponding state. The virtual machine may also have access to virtual hardware, such as a virtual hard drive, via a hypervisor. Often, multiple virtual machines run on the same server, and each virtual machine have a corresponding user. The virtual machines provide a complete isolation model such that one user's interaction with the computing system emulated by one virtual machine does not interact or interfere in any way with another virtual machine that emulates another computing system, even though those virtual machines operate on the same server. Such virtual machines are helpful in providing remote desktop capability in which the virtual machine provides the underlying processing capability for a client machine which can be remotely located. The virtual machine responds to events such as user input transmitted from the client to the virtual machine, and serves up desktop images (or graphics instructions) representing the desktop state corresponding to the virtual machine state.
Virtual machines can be pooled virtual machines or personal desktop virtual machines (also called herein “personal virtual machines”). Pooled virtual machines are created from the same master image, and thus are created in the same initial state. As users interact with the pooled virtual machine, the state of the virtual machine may change, but that changed state (including any user data) is not preserved when the user logs off the virtual machine. Thus, when a user is allocated a virtual machine from a pool of virtual machines, one virtual machine is not initially distinguishable from another.
Personal virtual machines, on the other hand, may be initially created by a master image. However, the personal virtual machine is allocated to the user for more than the duration of just that one session, and perhaps permanently. Thus, changes made to the state (such as user data) is preserved even after the user logs off from the corresponding virtual machine and also across virtual machine shutdown cycles. Thus the next time the user runs the personal virtual machine, the user may continue where he/she left off.